package main

import (
	"fmt"
	"time"
)

//定义一个channel
var ch = make(chan int)

// 把字符串的每个字符都打印出来
func Printer(str string) {
	for _, data := range str {
		fmt.Printf("%c\n", data)
		time.Sleep(time.Second)
	}
}

//让person1先执行完
func person1() {
	Printer("hello")
	ch <- 1 // 给管道写数据，发送数据
}
func person2() {
	// 由于person1没打印完之前，不会往chan中写数据，所以只能阻塞等待
	<-ch //从管道去数据，接收数据，如果没有则会阻塞不执行
	Printer("world")
}
func main() {
	// 两个人同时竞争打印出乱字符，
	// 【如何做到同步，先并发制定person1然后再并发执行person2】
	go person1()
	go person2()
	// 不让主协程结束，死循环
	for {

	}
}
